package pe.bf.extranet.web;

import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import pe.bf.domain.bean.Abono;
import pe.bf.domain.bean.SolicitudAbono;
import pe.bf.domain.bean.Usuario;
import pe.bf.extranet.cliente.ClienteWS;
import pe.bf.extranet.web.utils.ExportExcel;
import pe.bf.extranet.web.utils.Utils;

/**
 * Servlet implementation class servlet
 */
//@WebServlet("/estadoPagoServlet")
public class EstadoPagoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public EstadoPagoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
		 String empresa=request.getParameter("empresa");
		 String ruc=request.getParameter("ruc");
		 String descripcion=request.getParameter("descripcion");
		 String totalempleados=request.getParameter("totalempleados");
		 String moneda=request.getParameter("moneda");
		 String montototal=request.getParameter("montototal");
		 String tipoabono=request.getParameter("tipoabono");
		 String usuario=request.getParameter("usuario");
		 String archivo=request.getParameter("archivo");
		 String id=request.getParameter("id"); 
		 String accion=request.getParameter("accion"); 
		 
		 
		 
		 boolean isMultipart = ServletFileUpload.isMultipartContent(request);

	        if (isMultipart) {
	        	
	        	FileItemFactory factory = new DiskFileItemFactory();
	            ServletFileUpload upload = new ServletFileUpload(factory);
	            
	            
	                List items;
					try {
						items = upload.parseRequest(request);

	                Iterator iterator = items.iterator();
	                while (iterator.hasNext()) {
	                    FileItem item = (FileItem) iterator.next();  
	                        if(item.getFieldName().equals("accion")){
	                        	accion=item.getString();
	                        }else if(item.getFieldName().equals("ruc")){
	                        	ruc=item.getString();
	                        }else if(item.getFieldName().equals("empresa")){
	                        	empresa=item.getString();
		                    }else if(item.getFieldName().equals("descripcion")){
		                    	descripcion=item.getString();
		                    }else if(item.getFieldName().equals("moneda")){
		                    	moneda=item.getString();
		                    }else if(item.getFieldName().equals("montototal")){
		                    	montototal=item.getString();
		                    }else if(item.getFieldName().equals("tipoabono")){
		                    	tipoabono=item.getString();
		                    }else if(item.getFieldName().equals("usuario")){
		                    	usuario=item.getString();
		                    }else if(item.getFieldName().equals("archivo")){
		                    	archivo=item.getString();
		                    }else if(item.getFieldName().equals("id")){
		                    	id=item.getString();
		                    }else if(item.getFieldName().equals("totalempleados")){
		                    	totalempleados=item.getString();
		                    } 
	                        
	                }
	                
					} catch (FileUploadException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
	          
	        }
		  
		 
		 
		 request.setAttribute("empresa", empresa);
		 request.setAttribute("ruc", ruc);
		 request.setAttribute("descripcion", descripcion);
		 request.setAttribute("totalempleados", totalempleados);
		 request.setAttribute("moneda", moneda);
		 request.setAttribute("montototal", montototal);
		 request.setAttribute("tipoabono", tipoabono);
		 request.setAttribute("usuario", usuario);
		 request.setAttribute("archivo", archivo);
		 request.setAttribute("id", id);
		 
		 Usuario usuarioSession=(Usuario)request.getSession().getAttribute("usuarioBean");
		 
		 if(accion.equals("listar")){
			 List<Abono> listaAbono=ClienteWS.listarDetalleSolicitudAbono( new BigInteger(usuarioSession.getEmpresa().getIdEmpresa()+""), new BigInteger(id));
			 request.setAttribute("listaAbono",listaAbono);
			 request.getRequestDispatcher("estadopago.jsp").forward(request, response);
			 return;
		 }else if(accion.equals("aprobar")){
			 request.getRequestDispatcher("aproabono.jsp").forward(request, response);
			 return;
		 }else if(accion.equals("graba_aprobar")){
			 
			 
			 if(!usuarioSession.getClave().equals(Utils.encrypt(request.getParameter("txtClave")))){
				 request.setAttribute("error","Clave incorrecta. Intente nuevamente");
				 request.getRequestDispatcher("aproabono.jsp").forward(request, response);
				 return;
			 }
			 
			 
			 SolicitudAbono sol=new SolicitudAbono();
			 sol.setIdSolicitudabono(Long.valueOf(request.getParameter("id")));
			 sol.setEstado("APROBADO");
			 sol.setUsuarioprobacion(usuarioSession.getIdUsuario()+"");
			 ClienteWS.actualizarSolicitudAbono(sol);
			 request.getRequestDispatcher("solAboCtaServlet").forward(request, response);
			 return;
		 }
		  
			if(accion.equals("exportar_excel")){
				try {
					 List<Abono> listaAbono=ClienteWS.listarDetalleSolicitudAbono( new BigInteger(usuarioSession.getEmpresa().getIdEmpresa()+""), new BigInteger(id));
					 request.setAttribute("listaAbono",listaAbono);
					 
					ExportExcel<Abono> exportExcel= new ExportExcel<Abono>();
				exportExcel.generarExcel(request, response, listaAbono,
						"abonos", "reportTemplate_abono.xls", "abonos");
					
					request.getRequestDispatcher("estadopago.jsp").forward(request, response);
					return;
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
		
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet( request,  response);
	}

}
